package main

import (
	"fmt"
	"strconv"
	"strings"
)

// 切片遍历字符串 有中文
func slice2() {
	var str string = "Hello你好"
	list := []rune(str)
	fmt.Printf("类型是%T ,值是：%c \n", list, list)

	fmt.Printf("类型是%T ,值是：%#v \n", list, list)

	fmt.Printf("类型是%T ,值是：%+v \n", list, list)
}

func slice() {
	var str string = "Hello你好"
	for i, v := range str {
		fmt.Printf("索引为: %d 值为 %c \n", i, v)
	}
}

func main() {
	end := "end"
	slice()
	if end == "end" {
		return
	}
	// 统计字符串的长度
	var str string = "Hello你好"
	fmt.Println(str+" 的长度为：", len(str))

	// 字符串遍历
	/*
		for i := 0; i < len(str); i++ {
			fmt.Printf("索引为: %d 值为 %c \n", i, str[i])
		}
		for i, v := range str {
			fmt.Printf("索引为: %d 值为 %c \n", i, v)
		}*/

	// 利用 r:=[]rune(str) 来遍历字符串
	/*
		r := []rune(str)
		for i := 0; i < len(r); i++ {
			fmt.Printf("索引为: %d 值为 %c \n", i, r[i])
		}*/

	// 字符串转整数
	num, _ := strconv.Atoi("666")
	fmt.Println(num)
	// 整数转字符串
	numStr := strconv.Itoa(num)
	fmt.Println(numStr)

	// 统计一个字符串包含多少个指定的字符串
	var str1 string = " Hello 你好你好 "
	var str2 string = "你好"
	fmt.Println(str1+" 中有 ", strings.Count(str1, str2), " 个"+str2)

	// 不区分大小写的字符串比较
	fmt.Println(`strings.EqualFold("go", "GO") == `, strings.EqualFold("go", "GO"))

	// 区分大小写的字符串比较
	fmt.Println(`strings.Compare("go", "GO") ==`, strings.Compare("go", "GO"))
	fmt.Println(`"go" == "GO" --> `, "go" == "GO")

	// 返回子字符串在另一个字符串第一次出现的索引，没有则返回-1
	fmt.Println(strings.Index(str1, str2))

	// 字符串的替换
	fmt.Println(strings.Replace(str1, "你好", "Hello", 1))

	// 按某个字符切割
	fmt.Println(strings.Split(str1, "好"))

	// 字符串大小写转换
	fmt.Println(strings.ToLower(str1))
	fmt.Println(strings.ToUpper(str1))

	// 字符串左右空格去除
	fmt.Println(strings.TrimSpace(str1))
	fmt.Println(strings.TrimLeft("~你好呀~~", "~"))
	fmt.Println(strings.TrimRight(str1, " "))
	fmt.Println(strings.Trim(str1, " "))

	// 判断是否以某个字符串开头
	fmt.Println(strings.HasPrefix("http://www.baidu.com", "http"))
	// 判断是否以某个字符串结尾
	fmt.Println(strings.HasSuffix("http://www.baidu.com", "com"))

}
